/**
 * Copyright(c) 2014 Xunton Solutions
 *
 * History:
 *   15-1-27 下午1:43 Created by dwzhang
 */
package com.jade.modules.cms;

import java.util.List;

import com.jade.framework.base.criterion.Criteria;
import com.jade.framework.base.util.PagingList;

/**
 * 用户相关的内容数据接口。
 *
 * @author <a href="mailto:dwzhang@xunton.com">dwzhang</a> 
 * @version 1.0 15-1-27 下午1:43
 */
public interface UserContentDao
{
    /**
     * 创建评论。
     *
     * @param comment 评论信息。
     * @throws CmsException 处理异常。
     */
    public void addComment(Comment comment)
            throws CmsException;

    /**
     * 删除评论。
     *
     * @param comment 评论
     * @throws CmsException 处理异常。
     */
    public void removeComment(Comment comment)
            throws CmsException;

    /**
     * 更新评论。
     *
     * @param comment 评论信息。
     */
    public void updateComment(Comment comment)
            throws CmsException;

    /**
     * 删除一个内容的所有评论。
     *
     * @param contentId 内容标识
     * @throws CmsException 处理异常。
     */
    public int removeComment(long contentId)
            throws CmsException;

    /**
     *  获取评论详细信息。
     *
     * @param id 评论标识
     * @return 评论信息对象
     */
    public Comment getComment(long id);

    /**
     * 根据条件分页评论。
     *
     * @param criteria 查询条件
     * @return 评论列表。
     */
    public PagingList<Comment> queryComment(Criteria criteria);

    public PagingList<Comment> queryComment(long contentId, Criteria criteria);

    /**
     * 创建收藏。
     *
     * @param favorite 收藏信息。
     * @throws CmsException 处理异常。
     */
    public void addFavorite(Favorite favorite)
            throws CmsException;

    /**
     * 删除收藏。
     *
     * @param favorite 收藏
     * @throws CmsException 处理异常。
     */
    public void removeFavorite(Favorite favorite)
            throws CmsException;

    public int removeFavorite(String userType, String userId, String etype, long eid)
            throws CmsException;

    /**
     *  获取收藏详细信息。
     *
     * @param id 收藏标识
     * @return 收藏信息对象
     */
    public Favorite getFavorite(long id);

    /**
     * 根据条件分页收藏。
     *
     * @param criteria 查询条件
     * @return 收藏列表。
     */
    public PagingList<Favorite> queryFavorite(Criteria criteria);

    /**
     * 根据条件收藏收藏。
     *
     * @param criteria 查询条件
     * @return 收藏列表
     */
    public List<Favorite> listFavorite(Criteria criteria);
}
